package mysql8学习.高级.第09章_性能分析工具;

/**
 * MySQL监控分析视图  sys schema
 * 关于MySQL的性能监控和问题诊断，我们一般都从performance_schema中去获取想要的数据，
 * 在MySQL5.7.7版本中新增sys schema,
 * 它将performance_schema和information_schema中的数据以更容易理解的方式总结归纳为
 * ”视图”，其目的就是为了降低查询 performance_schema的复杂度，
 * 让DBA能够快速的定位问题。下面看看这些库中都有哪些监控表和视图，掌握了这些，
 * 在我们开发和运维的过程中就起到了事半功倍的效果。
 * 9.1 Sys schema视图摘要
 *     1.主机相关:以host_summary开头，主要汇总了 IO 延迟的信息。
 *     2.Innodb相关:以innodb开头, 汇总了innodb buffer信息和事务等待innodb锁的信息。
 *     3.I/O相关:以io开头，汇总了等待I/O、I/O使用量情况。
 *     4.内存使用情况:以memory开头， 从主机、线程、事件等角度展示内存的使用情况
 *     5.连接与会话信息: processlist和session 相关视图， 总结了会话相关信息。
 *     6.表相关:以schema_table开头的视图，展示了表的统计信息。
 *     7.索引信息:统计了索弓的使用情况，包含冗余索弓和未使用的索引|情况。
 *     8.语句相关:以statement开头， 包含执行全表扫描、使用临时表、排序等的语句信息。
 *     9.用户相关:以user开头的视图，统计了用户使用的文件I/O、执行语句统计信息。
 *     10.等待事件相关信息:以wait开头, 展示等待事件的延迟情况。
 *
 * 9.2 Sys schema视图使用场景
 *     #1.查询冗余索引
 *     select * from sys.schema_redundant_indexes ;
 *     #2、查询未使用过的索引
 *     select * from sys.schema_unused_indexes;
 *     #3，查询索引的使用情况
 *     select index_name, rows _selected, rows_inserted, rows_updated, rows_deleted
 *     from sys.schema_index_statistics where table_schema= 'dbname';
 *
 *     # 1.查询表的访问量
 *      SELECT table_schema, table_name, SUM(io_read_requests+io_write_requests) AS io
 *      FROM sys.schema_table_statistics GROUP BY table_schema, table_name ORDER BY io DESC;
 *     # 2.查询占用 bufferpool较多的表
 *      SELECT object_schema, object_name, allocated, DATA
 *      FROM sys.innodb_buffer_stats_by_ table ORDER BY allocated LIMIT 10;
 *      #3.查看表的全表扫描情况
 *      select * from sys.statements_with_full_table_scans where db='dbname';
 *
 *
 *      #1. 监控SQL执行的频率
 *      SELECT db, exec_count, QUERY FROM sys.statement_analysis
 *      ORDER BY exec_count DESC;
 *      #2.监控使用了排序的SQL
 *      SELECT db, exec_count, first_seen, last_seen, QUERY
 *      FROM sys.statements_with_sorting LIMIT 1;
 *      #3.监控使用了临时表或者磁盘临时表的SQL
 *      SELECT db, exec_count, tmp_tables, tmp_disk_tables, QUERY
 *      FROM sys. statement_analysis WHERE tmp_tables>0 OR tmp_disk_tables >0
 *      ORDER BY (tmp_tables+tmp_disk_tables) DESC;
 *
 *      IO相关
 *      #1.查看消耗磁盘IO的文件
 *      select file, avg_read, avg_write, avg_read+avg_write as avg_io
 *      from sys.io_global_by_file_by_bytes order by avg_read limit 10;
 *      Innodb相关
 *      #1.行锁阻塞情况
 *      select * from sys.innodb_lock_waits;
 *
 *
 *      风险提示:
 *      通过sys库去查询时，MyBQL会 消耗大量资源去收集相关信息，严重的可能会导致业务请求被阻塞，
 *      从而引起故障。
 *      建议生产上不要频繁的去查询sys或者performance_ schema、 information schema
 *      来完成监控、巡检等工作。
 *
 */
public class I_MySQL监控分析视图 {

}
